<?php
class Repuesto_Model extends CI_Model {
	const STR_NOMBRE_TABLA = 'repuesto';
	function __construct() {
		parent::__construct ();
	}
	
	/**
	 * Metodo que permite verificar si es que existe un nombre de un repuesto 
	 * que se esta ingresando en carga masiva
	 * @author Leidy Uribe Marcos
	 */
	function  verificar_nombre($data){
		$this->db->where('nombre', $data['nombre']);
		$query = $this->db->get ( self::STR_NOMBRE_TABLA );
		return $query->row_array ();
	}
	
	/**
	 * Metodo que inserta carga masiva y la muestra en bandeja de usuario
	 * @author Leidy Uribe Marcos
	 */
	function insert_carga_masiva($data) {
		$this->db->set ( 'id_estado', INT_ESTADO_ACTIVO );
		$this->db->set ( 'id_modelo', $data ['id_modelo'] );
		$this->db->set ( 'id_tipo_carroceria', $data ['id_tipo_carroceria'] );
		$this->db->set ( 'nombre', $data ['nombre'] );
		$this->db->set ( 'cod_repuesto', $data ['cod_repuesto'] );
		$this->db->set ( 'ano', $data ['ano'] );
		$this->db->set ( 'usuario_registro', $data ['usuario_registro'] );
		$this->db->set ( 'fecha_registro', $data ['fecha_registro'] );
		$this->db->insert ( 'repuesto' );
	}
	
	/**
	 * Metodo que obtiene los datos de un repuesto determinado.
	 *
	 * @author Fernando Esteban Valerio
	 * @param string $idRepuesto
	 *        	Id Repuesto
	 * @version 1.0
	 * @return array
	 */
	function getInfoRepuesto($idRepuesto) {
		$this->db->where ( 'id_repuesto', $idRepuesto );
		$this->db->where ( 'id_estado', INT_ESTADO_ACTIVO );
		$query = $this->db->get ( self::STR_NOMBRE_TABLA );
		return $query->result ();
	}
	
	/**
	 * Metodo que obtiene los repuestos asociados a un modelo y a un tipo de
	 * carroceria.
	 * 
	 * @author Fernando Esteban Valerio
	 * @param string $idModelo
	 *        	Id Modelo
	 * @param string $idTipoCarroceria
	 *        	Id Tipo Carroceria
	 * @version 1.0
	 * @return array
	 */
	function getListRepuesto($idModelo = '', $idTipoCarroceria = '') {
		if ($idModelo != '') {
			$this->db->where ( 'id_modelo', $idModelo );
		}
		if ($idTipoCarroceria != '') {
			$this->db->where ( 'id_tipo_carroceria', $idTipoCarroceria );
		}
		$this->db->where ( 'id_estado', INT_ESTADO_ACTIVO );
		$this->db->order_by ( 'nombre', 'DESC' );
		$query = $this->db->get ( self::STR_NOMBRE_TABLA );
		return $query->result ();
	}
	function getPorRepuesto($data) {
		$repuesto = $this->db->query ( 'SELECT repuesto.id_repuesto AS id_repuesto,
    			modelo.nombre AS modelo, repuesto.nombre AS repuesto, marca.nombre AS marca,
    			repuesto.ano AS ano, repuesto.id_estado AS estado,
    			repuesto.fecha_registro AS fecha, ttipocarroceria.nombre AS tipo_carroceria,
    			repuesto.id_modelo AS id_modelo,
    			repuesto.imagen AS imagen, repuesto.cod_repuesto AS cod_repuesto
				FROM repuesto, modelo, marca, tabla_maestra, tabla_maestra ttipocarroceria
				WHERE repuesto.id_modelo = modelo.id_modelo AND
    			modelo.id_marca = marca.id_marca AND
    			repuesto.id_tipo_carroceria = ttipocarroceria.id_tabla_maestra AND
    			repuesto.id_estado = tabla_maestra.id_tabla_maestra AND
				repuesto.' );
		return $repuesto->result ();
	}
	/**
	 * Obtiene todos los repuestos
	 * @author Leidy uribe Marcos
	 */
	function getRepuesto() {
		$repuesto = $this->db->query ( 'SELECT repuesto.id_repuesto AS id_repuesto, 
    			modelo.nombre AS modelo, repuesto.nombre AS repuesto, marca.nombre AS marca, 
    			repuesto.ano AS ano, repuesto.id_estado AS estado, 
    			repuesto.fecha_registro AS fecha, ttipocarroceria.nombre AS tipo_carroceria, 
    			repuesto.id_modelo AS id_modelo, 
    			repuesto.imagen AS imagen, repuesto.cod_repuesto AS cod_repuesto
				FROM repuesto, modelo, marca, tabla_maestra, tabla_maestra ttipocarroceria
				WHERE repuesto.id_modelo = modelo.id_modelo AND
    			modelo.id_marca = marca.id_marca AND
    			repuesto.id_tipo_carroceria = ttipocarroceria.id_tabla_maestra AND
    			repuesto.id_estado = tabla_maestra.id_tabla_maestra' );
		return $repuesto->result ();
	}
	
	/**
	 * Obtiene todos los repuestos segun el id enviado
	 * @author Leidy Uribe Marcos
	 */
	function getPorid($id) {
		$porid = $this->db->query ( 'SELECT repuesto.id_repuesto AS id_repuesto, 
    			repuesto.nombre AS nombre, marca.id_marca AS id_marca, marca.nombre AS marca, 
    			repuesto.id_modelo AS id_modelo, modelo.nombre AS modelo,ano, 
    			ttipocarroceria.nombre AS tipo_carroceria, 
    			repuesto.id_tipo_carroceria AS id_tabla_maestra,
    			repuesto.id_estado AS estado, repuesto.imagen AS imagen, repuesto.cod_repuesto
    			AS cod_repuesto
				FROM repuesto, modelo, marca, tabla_maestra, tabla_maestra ttipocarroceria
				WHERE repuesto.id_modelo = modelo.id_modelo AND
    			modelo.id_marca = marca.id_marca AND
    			repuesto.id_tipo_carroceria = ttipocarroceria.id_tabla_maestra AND
				repuesto.id_repuesto = ' . $id );
		return $porid->result ();
	}
	
	/**
	 * Selecciona el ultimo repuesto ingresado
	 * @author Leidy Uribe Marcos
	 */
	function getId() {
		$ultimo_id = $this->db->query ( 'SELECT id_repuesto FROM repuesto ORDER BY id_repuesto DESC LIMIT 1' );
		return $ultimo_id->row_array ();
	}
	
	/**
	 * Inserta un repuesto
	 * @author Leidy Uribe Marcos
	 */
	function insert($data) {
		$this->db->set ( 'id_estado', INT_ESTADO_ACTIVO );
		$this->db->set ( 'id_modelo', $data ['modelo'] );
		$this->db->set ( 'id_tipo_carroceria', $data ['tipo_carroceria'] );
		$this->db->set ( 'nombre', $data ['nombre'] );
		$this->db->set ( 'cod_repuesto', $data ['cod_repuesto'] );
		$this->db->set ( 'imagen', $data ['nombre_imagen'] );
		$this->db->set ( 'ano', $data ['ano'] );
		$this->db->set ( 'usuario_registro', $data ['usuario_registro'] );
		$this->db->set ( 'fecha_registro', $data ['fecha_registro'] );
		$this->db->insert ( 'repuesto' );
	}
	
	/**
	 * Actualiza el estado de un repuesto segun su id
	 * @author Leidy Uribe Marcos
	 */
	function updateRepuesto($data) {
		$this->db->set ( 'id_estado', $data ['estado_repuesto'] );
		$this->db->where ( 'id_repuesto', $data ['id_repuesto'] );
		$this->db->update ( 'repuesto' );
	}
	
	/**
	 * Actualiza todos los datos de un repuesto
	 * @author Leidy Uribe Marcos
	 */
	function update($data) {
		$this->db->set ( 'id_modelo', $data ['modelo'] );
		$this->db->set ( 'id_tipo_carroceria', $data ['tipo'] );
		$this->db->set ( 'nombre', $data ['nombre'] );
		$this->db->set ( 'cod_repuesto', $data ['cod_repuesto'] );
		$this->db->set ( 'imagen', $data ['nombre_imagen'] );
		$this->db->set ( 'ano', $data ['ano'] );
		$this->db->set ( 'usuario_modificacion', $data ['usuario_modificacion'] );
		$this->db->set ( 'fecha_modificacion', $data ['fecha_modificacion'] );
		$this->db->set ( 'ip', $data ['ip'] );
		$this->db->where ( 'id_repuesto', $data ['id'] );
		$this->db->update ( 'repuesto' );
	}
	function cancel($id) {
		$this->db->set ( 'id_estado', INT_ESTADO_INACTIVO );
		$this->db->where ( 'id_repuesto', $id );
		$this->db->update ( 'repuesto' );
	}
}
